package com.yuanyi.util;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.OSSObject;

import javax.servlet.http.HttpServletResponse;
import java.io.*;

/**
 * Created by Administrator on 2019/8/30.
 */
public class OSSUtil {
    public static void main(String[] args) throws IOException {
     //   ossUpload("pic1","");
      //  System.out.println(OSSUtil.ossDownload("bf41bc5e-a153-4d7a-8d06-3ee4abbecdac.jpg"));;
    }

    //URL https://wx16.oss-cn-qingdao.aliyuncs.com/pic1
    public static void ossUpload(String picName,byte[] b){
        // Endpoint以杭州为例，其它Region请按实际情况填写。
        String endpoint = "http://oss-cn-qingdao.aliyuncs.com";
// 阿里云主账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维，请登录 https://ram.console.aliyun.com 创建RAM账号。
        String accessKeyId = "8XierCVyOqtyk0pN";
        String accessKeySecret = "IoLVusEjSmLxXK72ykTOftqMoMwE3i";
        String bucketName = "wx16";
        String objectName = picName;

// 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

// 上传内容到指定的存储空间（bucketName）并保存为指定的文件名称（objectName）。

        ossClient.putObject(bucketName, objectName,
                new ByteArrayInputStream(b));

// 关闭OSSClient。
        ossClient.shutdown();
    }

    public static void ossDownload(HttpServletResponse response, String picName) throws IOException {
        // Endpoint以杭州为例，其它Region请按实际情况填写。
        String endpoint = "http://oss-cn-qingdao.aliyuncs.com";
// 阿里云主账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维，请登录 https://ram.console.aliyun.com 创建RAM账号。
        String accessKeyId = "8XierCVyOqtyk0pN";
        String accessKeySecret = "IoLVusEjSmLxXK72ykTOftqMoMwE3i";
        String bucketName = "wx16";
        String objectName = picName;
// 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

// ossObject包含文件所在的存储空间名称、文件名称、文件元信息以及一个输入流。
        OSSObject ossObject = ossClient.getObject(bucketName, objectName);
// 读取文件内容。
        //System.out.println("Object content:");
        InputStream in = ossObject.getObjectContent();

        int num;
        byte[] b= new byte[1024];
        while((num=in.read(b))!=-1) {
            response.getOutputStream().write(b,0,num);
        }
        response.getOutputStream().flush();

        ossClient.shutdown();
    }
}
